<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1. JSON的两种结构

        // 对象结构:
        // 对象结构在JSON中表示为{}括起来的内容。数据结构为{ key: value, key: value, .. }的键
        // 值对结构。其中, key 必须是使用英文的双引号包事的字符串, value 的数据类型可以是数字、字符串、
        // 布尔值、null. 数组、对象6种类型。

        // 数组结构:
        // 数组结构:数组结构在JSON中表示为[]括起来的内容。数据结构为[ "java", "javascript", 30, true ... ].
        // 数组中数据的类型可以是数字、字符串、布尔值、null. 数组、对象6种类型。


        // 3. JSON语法注意事项
        // ①属性名必须使用双引号包裹
        // ②字符串类型的值必须使用双引号包裹
        // ③JSON中不允许使用单引号表示字符串
        // ④JSON中不能写注释
        // ⑤JSON的最外层必须是对象或数组格式
        // ⑥不能使用undefined或函数作为JSON的值
        // JSON的作用:在计算机与网络之间存储和传输数据。
        // JSON的本质:用字符串来表示Javascript对象数据或数组数据


        // JSON和js对象的关系
        // JSON是JS对象的字符串表示法，它使用文本表示个JS对象的信息，本质是一个字符串。例如:

        // 这是一个对象
        var obj = {
            a: 'hello',
            b: 'world',
        };
        // 这是一个json字符串，本质上是一个字符串
        var json = '{"a":"hello","b":"world"}';


        // 4.JSON和js对象互转
        var jsonStr = '{"a":"hello","b":"world"}';


        // JSON转换为js  叫做反序列化 (字符串转换为对象)
        var objnew = JSON.parse(jsonStr);
        console.log(objnew);

        // js转换为JSON  叫做序列化(对象转换为字符串)
        var obj2 = {
            a: 'hello',
            b: 'world',
            c: false
        };
        var string = JSON.stringify(obj2);
        console.log(string);
    </script>
</body>

</html>